Software complexity is increasing resulting in changes to product cycles, requirements and modes of delivery of software applications. Customers' needs are being transformed to request flexibility in terms of processes, landscape and software components. Development of new software applications often relies on existing, previously developed functionality. Typically, software applications can adopt or get access to different services and capabilities from other software offerings. It is a common use case to adapt existing functionality to perform in a new environment. There are a number of scenarios for providing software components or entire applications for reuse by customers or end user. For example, software platforms can provide functionality that can be extended and therefore new applications can be built on top of them.
Cloud computing is the delivery of computing resources as a service over a network (e.g., the Internet). Software-as-a-Service (SaaS) is a type of a solution, where a cloud service provider allows software applications and various hardware and software resources on-demand when requested by an end user (e.g., customer).A customer of on-demand applications is free from the procurement and maintenance of the hardware and software needed for executing the applications. Platform-as-a-Service (PaaS) is another category of cloud computing solutions that provides the computing platform including operating system, programming language execution environment, database, and web server to facilitate the development and deployment of on-demand applications and services.
PaaS is a growing technology space offering possibilities for optimization of information technology (IT) spending. It provides facilities required to support the lifecycle of web applications and services, available from the Internet. Applications can run as a SaaS on the infrastructure that is provided from a PaaS provider. PaaS may give application developers the tools to design, develop, test, deploy and host their software applications, as well as use of application services and infrastructure. Typically, when an application is deployed on a given PaaS, it is expected to find it provisioned and ready to be installed and stared. Depending on the complexity of the solution, the provisioning process may involve a series of tedious tasks prone to errors.